#ifndef MOTEURJEU_H
#define MOTEURJEU_H

#include <string>

// DEBUG
#include <fstream>

using namespace std;

#include "moteur.h"
#include "partie.h"
#include "joueur.h"

class MoteurJeu : public Moteur {
    Q_OBJECT

    private:
        int XClique;
        int YClique;
        bool pieceCliquee;
        bool pieceDeplacee;
        bool attentePromotion;
        Partie *partie;
        
        Joueur *jB, *jN;

    public:
        MoteurJeu(Jeu * parent) : Moteur(parent) {
            partie = NULL;
        }
        ~MoteurJeu() {}

        virtual void executer();

        Partie * getPartie() const;

    private:
        virtual void traiterMessage(Message m);
        // traitement des messages
        void traiterCreerPartie(Message m);
        void traiterAbandonPartie(Message m);

        void commencerPartie(Joueur *jB, Joueur *jN);
        void arreterPartie();

    public:
        bool SiPieceCliquee() const;
        bool SiPieceDeplacee() const;
        void SetPieceDeplacee(bool b);
        void SetPieceCliquee(bool b);
        void setAttentePromotion(bool b);
        int getXClique() const;
        int getYClique() const;
};

#endif // MOTEURJJEU_H

